//
//  HMComposeTextView+Extension.swift
//  Black22
//
//  Created by Apple on 16/11/26.
//  Copyright © 2016年 KY. All rights reserved.
//

import UIKit

extension HMComposeTextView {
    //  获取表情内容
    var emoticonText: String {
        var result = ""
        //  遍历富文本的属性获取对应的表情描述供新浪微博使用
        self.attributedText.enumerateAttributes(in: NSMakeRange(0, self.attributedText.length), options: [], using: { (info, range, _) -> Void in
            if let attachment = info["NSAttachment"] as? HMTextAttachment {
                //  如果是文本附件表示是图片
                //  通过文本附件获取对应的表情模型
                if let emoticon = attachment.emoticon {
                    result += emoticon.chs!
                }
                
            } else {
                //  文字富文本
                let selectedAttributed = self.attributedText.attributedSubstring(from: range)
                result += selectedAttributed.string
            }
        })
        
        return result
    }
    
    
    //  根据模型插入表情富文本
    func insertEmoticon(emoticon: HMEmoticon) {
        if emoticon.type == "0" {
            //  图片，插入富文本
            //            self.insertText(emoticon.chs!)
            //  记录上次的富文本
            let lastAttributedStr = NSMutableAttributedString(attributedString: self.attributedText)
//            //  根据路径创建图片对象
//            let image = UIImage(named: emoticon.fullPath!)
//            //  根据图片对象创建文本附件
//            let attachMent = HMTextAttachment()
//            //  绑定对应的表情模型
//            attachMent.emoticon = emoticon
//            attachMent.image = image
//            let lineHeight = self.font!.lineHeight
//            //  设置图片大小
//            attachMent.bounds = CGRect(origin: CGPoint(x: 0, y: -3.5), size: CGSize(width: lineHeight, height: lineHeight))
//            //  根据文本附件创建富文本
//            let attributedStr = NSAttributedString(attachment: attachMent)
            
            let attributedStr = NSAttributedString.attributedStringWithEmoticon(emoticon: emoticon, font: self.font!)
            
            //            lastAttributedStr.append(attributedStr)
            
            //  获取选中的范围
            var selectRange = self.selectedRange
            //  替换指定的范围的富文本
            lastAttributedStr.replaceCharacters(in: selectRange, with: attributedStr)
            
            //  开始位置
            selectRange.location += 1
            //  长度
            selectRange.length = 0
            
            //  设置富文本字体大小
            lastAttributedStr.addAttribute(NSFontAttributeName, value: self.font!, range: NSMakeRange(0, lastAttributedStr.length))
            
            //  设置富文本
            self.attributedText = lastAttributedStr
            //  设置选中范围
            self.selectedRange = selectRange
            
            //  设置富文本不会执行文字改变，自己发送通知，调用代理方法
            NotificationCenter.default.post(name: NSNotification.Name.UITextViewTextDidChange, object: nil)
            self.delegate?.textViewDidChange?(self)
            
            
        } else {
            //  插入文字
            
            self.insertText((emoticon.code! as NSString).emoji())
            
        }
        
        //  文字改变
        
    }

}
